<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //1、什么成员属性、成员方法？
        // 成员属性和成员方法归对象所有，当实例化类时会类中的属性和方法拷贝一份到对象上，每个对象都具有类中的基本属性和方法，这些基本属性和方法称为成员属性、成员方法

   

        //定义类：人类
        class People{

            //定义静态属性：当某个属性的属性值是相对固定不变的则可以考虑把该属性定义成静态属性
           static typeName='人类';   //类的名称

            //方法：

            //特殊方法：构造器方法是在实例化类时会自动被调用
            //构造器方法通常用来初始化
            constructor(name,sexs,ages){
                // console.log(name,sexs,ages,'Hello');
                this.xingming = name;  //属性：姓名
                this.sex = sexs;       //属性：性别
                this.age = ages;       //属性：年龄
            }

            //定义静态方法：
            static getTypeName(){
                console.log(`类名称为：${this.typeName}`);
            }


            eat(){
                //注意：在成员方法中不能访问静态属性
               // console.log(this.typeName,'typeName...');
                console.log(`${this.xingming} ${this.sex} ${this.age} 正在吃饭...`);
            }

            work(){
                console.log(`${this.xingming} ${this.sex} ${this.age} 正在工作!`);
            }
        }

        //注意：访问类中的静态属性和静态方法时则要通过类名.静态属性或类名.静态方法来直接使用
         People.getTypeName();
         console.log(People.typeName,123);


        //实例化类：创建对象
        let  lisi = new People('李四',20,'男');
        lisi.eat();
        lisi.work();
        console.log(lisi.xingming);
        //注意：不能通过对象来访问静态方法及属性
        //console.log(lisi.typeName);
        //lisi.getTypeName();   //  lisi.getTypeName is not a function

        //实例化类：创建对象
        //let zhangsan = new People('张三',19,'女');
        let zhangsan = new People();
        zhangsan.work();






        //2、什么是静态属性、静态方法？
        //   静态属性和静态方法归类所有，全局独有一份，在实例化类(创建对象)时不会把静态属性和静态方法拷贝对象上。 
    </script>
</head>
<body>
    
</body>
</html>